home *** CD-ROM | disk | FTP | other *** search
Text File | 1989-12-07 | 58.4 KB | 1,840 lines |
- Path: uunet!island!sun.com
- From: argv@sun.com (Dan Heller)
- Newsgroups: comp.sources.x
- Subject: v05i042: XView example programs, Part04/06
- Message-ID: <1242@island.uu.net>
- Date: 8 Dec 89 07:38:42 GMT
- Sender: argv@island.uu.net
- Lines: 1829
- Approved: island!argv@sun.com
-
- Submitted-by: Dan Heller <argv@sun.com>
- Posting-number: Volume 5, Issue 42
- Archive-name: xview.demos/part04
-
-
-
- #! /bin/sh
- # This is a shell archive. Remove anything before this line, then feed it
- # into a shell via "sh file" or similar. To overwrite existing files,
- # type "sh file -c".
- # The tool that generated this appeared in the comp.sources.unix newsgroup;
- # send mail to comp-sources-unix@uunet.uu.net if you want that tool.
- # If this archive is complete, you will see the following message at the end:
- # "End of archive 4 (of 6)."
- # Contents: xview.demos/color/cardback.icon xview.demos/color/color.c
- # xview.demos/cursor/hot_spot.c xview.demos/fonts/simple_font.c
- # xview.demos/fonts/type_font.c xview.demos/icons/closed.icon
- # xview.demos/menus/menu.c xview.demos/menus/simple_menu.c
- # xview.demos/menus/xv_menu.c xview.demos/misc/fullscreen.c
- # xview.demos/notice/trigger_notice.c xview.demos/notifier/animate.c
- # xview.demos/panels/Imakefile xview.demos/panels/list_glyphs.c
- # xview.demos/panels/panel_repaint.c
- # xview.demos/seln_svc/seln_line.c
- # xview.demos/seln_svc/simple_seln.c
- # xview.demos/sv_compat/gray_stencil.pr
- # xview.demos/sv_compat/pw_draw.c
- # Wrapped by argv@island on Thu Dec 7 23:18:23 1989
- PATH=/bin:/usr/bin:/usr/ucb ; export PATH
- if test -f 'xview.demos/color/cardback.icon' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'xview.demos/color/cardback.icon'\"
- else
- echo shar: Extracting \"'xview.demos/color/cardback.icon'\" \(2003 characters\)
- sed "s/^X//" >'xview.demos/color/cardback.icon' <<'END_OF_FILE'
- X/* Format_version=1, Width=64, Height=64, Depth=1, Valid_bits_per_item=16
- X * Description: The back of a Sun playing card.
- X * Background: White.
- X */
- X 0x3FFF,0xFFFF,0xFFFF,0xF800,0x7FFF,0xFFFF,0xFFFF,0xFC00,
- X 0xC000,0x0000,0x0000,0x0600,0xC000,0x0000,0x0000,0x0600,
- X 0xC000,0x0000,0x0000,0x0600,0xC000,0x0000,0x0000,0x0600,
- X 0xC000,0x0000,0x0000,0x0600,0xC000,0x0000,0x0000,0x0600,
- X 0xC000,0x0000,0x0000,0x0600,0xC000,0x0000,0x0000,0x0600,
- X 0xC000,0x0000,0x0000,0x0600,0xC000,0x0000,0x0000,0x0600,
- X 0xC000,0x0000,0x0000,0x0600,0xC000,0x0000,0x0000,0x0600,
- X 0xC000,0x0038,0x0000,0x0600,0xC000,0x007C,0x0000,0x0600,
- X 0xC000,0x00FE,0x0000,0x0600,0xC000,0x00EF,0x0000,0x0600,
- X 0xC000,0x02E7,0x8000,0x0600,0xC000,0x0773,0xC000,0x0600,
- X 0xC000,0x07B9,0xE000,0x0600,0xC000,0x13DC,0xF000,0x0600,
- X 0xC000,0x39EE,0x7800,0x0600,0xC000,0x5CF7,0x3400,0x0600,
- X 0xC000,0xEE7B,0x8E00,0x0600,0xC001,0xC73D,0xDC00,0x0600,
- X 0xC003,0x9B9E,0xB980,0x0600,0xC007,0x3DCE,0x73C0,0x0600,
- X 0xC00E,0x78FE,0xE780,0x0600,0xC01C,0xF77D,0xCF70,0x0600,
- X 0xC039,0xEFBB,0x9EF8,0x0600,0xC073,0xDFC7,0x3DFC,0x0600,
- X 0xC077,0xB9C7,0x7B9C,0x0600,0xC07F,0x73C7,0xF73C,0x0600,
- X 0xC03E,0xE7BB,0xEE78,0x0600,0xC01D,0xCF7D,0xDCF0,0x0600,
- X 0xC003,0x9EFE,0x39E0,0x0600,0xC007,0x3CEF,0x73C0,0x0600,
- X 0xC002,0x7AE7,0xA780,0x0600,0xC000,0xF773,0xCF00,0x0600,
- X 0xC000,0xE3B9,0xEE00,0x0600,0xC000,0x51DC,0xF400,0x0600,
- X 0xC000,0x38EE,0x7800,0x0600,0xC000,0x1C77,0x3000,0x0600,
- X 0xC000,0x0E3B,0x8000,0x0600,0xC000,0x071D,0xC000,0x0600,
- X 0xC000,0x039E,0x8000,0x0600,0xC000,0x01CE,0x0000,0x0600,
- X 0xC000,0x00FE,0x0000,0x0600,0xC000,0x007C,0x0000,0x0600,
- X 0xC000,0x0038,0x0000,0x0600,0xC000,0x0000,0x0000,0x0600,
- X 0xC000,0x0000,0x0000,0x0600,0xC000,0x0000,0x0000,0x0600,
- X 0xC000,0x0000,0x0000,0x0600,0xC000,0x0000,0x0000,0x0600,
- X 0xC000,0x0000,0x0000,0x0600,0xC000,0x0000,0x0000,0x0600,
- X 0xC000,0x0000,0x0000,0x0600,0xC000,0x0000,0x0000,0x0600,
- X 0xC000,0x0000,0x0000,0x0600,0xC000,0x0000,0x0000,0x0600,
- X 0x7FFF,0xFFFF,0xFFFF,0xFC00,0x3FFF,0xFFFF,0xFFFF,0xF800
- END_OF_FILE
- if test 2003 -ne `wc -c <'xview.demos/color/cardback.icon'`; then
- echo shar: \"'xview.demos/color/cardback.icon'\" unpacked with wrong size!
- fi
- # end of 'xview.demos/color/cardback.icon'
- fi
- if test -f 'xview.demos/color/color.c' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'xview.demos/color/color.c'\"
- else
- echo shar: Extracting \"'xview.demos/color/color.c'\" \(2990 characters\)
- sed "s/^X//" >'xview.demos/color/color.c' <<'END_OF_FILE'
- X#include <X11/Xlib.h>
- X#include <X11/Xutil.h>
- X
- Xmain(argc, argv)
- Xchar *argv[];
- X{
- X Display *display;
- X int screen;
- X XSizeHints sizehints;
- X Window window;
- X XEvent event;
- X XButtonEvent *button;
- X XColormapEvent *colormap;
- X short i;
- X int done = 0;
- X Colormap cmap, orig_cmap;
- X XVisualInfo vTemplate, *visualList;
- X int visualsMatched;
- X Visual *visual;
- X XSetWindowAttributes atts;
- X XColor color;
- X
- X display = XOpenDisplay("");
- X screen = DefaultScreen ( display );
- X window = XDefaultRootWindow(display);
- X
- X vTemplate.screen = screen;
- X vTemplate.depth = 8;
- X vTemplate.class = PseudoColor;
- X visualList = XGetVisualInfo(display,
- X VisualScreenMask|VisualClassMask|VisualDepthMask,
- X &vTemplate, &visualsMatched);
- X if ( visualsMatched == 0 ) {
- X puts("visual not found, using default");
- X visual = DefaultVisual( display, screen );
- X } else {
- X printf("found %d visuals\n", visualsMatched);
- X visual = visualList[0].visual;
- X }
- X
- X sizehints.x = 200;
- X sizehints.y = 0;
- X sizehints.width = sizehints.height = 150;
- X sizehints.flags = USSize | USPosition;
- X
- X cmap = XCreateColormap( display,window, visual, AllocAll);
- X orig_cmap = DefaultColormap(display, DefaultScreen(display));
- X atts.colormap = cmap;
- X
- X window = XCreateWindow(display,DefaultRootWindow(display),
- X sizehints.x, sizehints.y, sizehints.width, sizehints.height,
- X 0, 8, InputOutput, visual, CWColormap, &atts);
- X
- X XSetStandardProperties(display, window, argv[0],
- X argv[0], None, argv, 1, &sizehints);
- X
- X color.flags = DoRed|DoGreen|DoBlue;
- X srandom(time(0));
- X printf("Allocating %d colors\n", visual->map_entries);
- X for (color.pixel=0; color.pixel < visual->map_entries; color.pixel++) {
- X color.red = random()%65536;
- X color.green = random()%65536;
- X color.blue = random()%65536;
- X XStoreColor ( display, cmap, &color );
- X }
- X
- X while (visualsMatched > 0)
- X XFree(visualList[--visualsMatched]);
- X
- X /* Now that the screen is defined, select inputs and get them */
- X XSelectInput(display, window, ButtonPressMask | ColormapChangeMask);
- X XMapWindow(display, window);
- X
- X do {
- X XNextEvent ( display, &event );
- X switch (event.type) {
- X case ButtonPress:
- X printf ("********* Found ButtonPress event ********\n");
- X button = (XButtonEvent *) &event;
- X printf ("button is %d\n", button->button );
- X if (button->button == 3)
- X done = -1;
- X break;
- X case ColormapNotify:
- X printf ("********* Found ColormapNotify event ********\n");
- X colormap = (XColormapEvent *) &event;
- X if ( colormap->state == ColormapInstalled )
- X printf ("Colormap has been installed\n");
- X else
- X printf ("Colormap has been uninstalled\n");
- X printf ("Colormap is %d\n", colormap->colormap );
- X printf ("Associated window is %d\n", colormap->window );
- X }
- X } while (!done);
- X XCloseDisplay(display);
- X}
- END_OF_FILE
- if test 2990 -ne `wc -c <'xview.demos/color/color.c'`; then
- echo shar: \"'xview.demos/color/color.c'\" unpacked with wrong size!
- fi
- # end of 'xview.demos/color/color.c'
- fi
- if test -f 'xview.demos/cursor/hot_spot.c' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'xview.demos/cursor/hot_spot.c'\"
- else
- echo shar: Extracting \"'xview.demos/cursor/hot_spot.c'\" \(3094 characters\)
- sed "s/^X//" >'xview.demos/cursor/hot_spot.c' <<'END_OF_FILE'
- X/*
- X * hot_spot.c -- create a cursor and query it's position on the
- X * screen and in the panel's window.
- X * Our own function, create_cursor(), attaches a new cursor to the
- X * window parameter passed into the function.
- X */
- X#include <X11/X.h>
- X#include <X11/Xlib.h> /* for the xlib graphics */
- X#include <xview/xview.h>
- X#include <xview/panel.h>
- X#include <xview/cursor.h>
- X#include <xview/svrimage.h>
- X
- Xmain(argc, argv)
- Xint argc;
- Xchar *argv[];
- X{
- X Frame frame;
- X Panel panel;
- X void do_it();
- X
- X xv_init(XV_INIT_ARGC_PTR_ARGV, &argc, argv, NULL);
- X
- X /*
- X * Create a base frame, a panel, and a panel button.
- X */
- X frame = (Frame)xv_create(XV_NULL, FRAME, NULL);
- X panel = (Panel)xv_create(frame, PANEL, NULL);
- X create_cursor(xv_get(panel, CANVAS_NTH_PAINT_WINDOW, 0));
- X (void) xv_create(panel, PANEL_BUTTON,
- X PANEL_LABEL_STRING, "Push Me",
- X PANEL_NOTIFY_PROC, do_it,
- X NULL);
- X
- X window_fit(panel);
- X window_fit(frame);
- X window_main_loop(frame);
- X}
- X
- X/*
- X * when user selects the panel button, the current mouse location is
- X * printed relative to the panel's window and to the screen.
- X * This location is governed by the hot spot on the cursor.
- X */
- Xvoid
- Xdo_it(item, event)
- X{
- X Rect *r;
- X Panel panel = (Panel)xv_get(item, PANEL_PARENT_PANEL);
- X
- X r = (Rect *)xv_get(xv_get(panel, XV_ROOT), WIN_MOUSE_XY);
- X printf("Root window: %d %d\n", r->r_left, r->r_top);
- X r = (Rect *)xv_get(xv_get(panel, CANVAS_NTH_PAINT_WINDOW, 0), WIN_MOUSE_XY);
- X printf("Panel window: %d %d\n", r->r_left, r->r_top);
- X}
- X
- X/*
- X * create_cursor() creates a bull's eye cursor and assigns it
- X * to the window (parameter).
- X */
- Xcreate_cursor(window)
- XXv_Window window;
- X{
- X Xv_Cursor cursor;
- X Server_image image;
- X Pixmap pixmap;
- X Display *dpy = (Display *)xv_get(window, XV_DISPLAY);
- X GC gc;
- X XGCValues gcvalues;
- X
- X image = (Server_image)xv_create(XV_NULL, SERVER_IMAGE,
- X XV_WIDTH, 16,
- X XV_HEIGHT, 16,
- X NULL);
- X pixmap = (Pixmap)xv_get(image, XV_XID);
- X /* Create GC with reversed foreground and background colors to
- X * clear pixmap first. Use 1 and 0 because pixmap is 1-bit deep.
- X */
- X gcvalues.foreground = 0;
- X gcvalues.background = 1;
- X gc = XCreateGC(dpy, pixmap, GCForeground|GCBackground, &gcvalues);
- X XFillRectangle(dpy, pixmap, gc, 0, 0, 16, 16);
- X /*
- X * Reset foreground and background values for XDrawArc() routines.
- X */
- X gcvalues.foreground = 1;
- X gcvalues.background = 0;
- X XChangeGC(dpy, gc, GCForeground | GCBackground, &gcvalues);
- X XDrawArc(dpy, pixmap, gc, 2, 2, 12, 12, 0, 360 * 64);
- X XDrawArc(dpy, pixmap, gc, 6, 6, 4, 4, 0, 360 * 64);
- X
- X /* Creaste cursor and assign it to the window (parameter) */
- X cursor = xv_create(XV_NULL, CURSOR,
- X CURSOR_IMAGE, image,
- X CURSOR_XHOT, 7,
- X CURSOR_YHOT, 7,
- X NULL);
- X xv_set(window, WIN_CURSOR, cursor, NULL);
- X
- X /* free the GC -- the cursor and the image must not be freed. */
- X XFreeGC(dpy, gc);
- X}
- END_OF_FILE
- if test 3094 -ne `wc -c <'xview.demos/cursor/hot_spot.c'`; then
- echo shar: \"'xview.demos/cursor/hot_spot.c'\" unpacked with wrong size!
- fi
- # end of 'xview.demos/cursor/hot_spot.c'
- fi
- if test -f 'xview.demos/fonts/simple_font.c' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'xview.demos/fonts/simple_font.c'\"
- else
- echo shar: Extracting \"'xview.demos/fonts/simple_font.c'\" \(2446 characters\)
- sed "s/^X//" >'xview.demos/fonts/simple_font.c' <<'END_OF_FILE'
- X/*
- X * simple_font.c -- very simple program showing how to render text
- X * using a font gotten from xv_find(). Hello World is printed in
- X * the top-left corner of a canvas window.
- X */
- X#include <stdio.h>
- X#include <X11/X.h>
- X#include <X11/Xlib.h> /* X.h and Xlib.h used for Xlib graphics */
- X#include <xview/xview.h>
- X#include <xview/canvas.h>
- X#include <xview/font.h>
- X#include <xview/xv_xrect.h>
- X
- X#define GC_KEY 10 /* any arbitrary number -- used for XV_KEY_DATA */
- X
- Xmain(argc, argv)
- Xint argc;
- Xchar *argv[];
- X{
- X Frame frame;
- X Canvas canvas;
- X XGCValues gcvalues;
- X Xv_Font font;
- X void my_repaint_proc();
- X Display *dpy;
- X GC gc;
- X
- X xv_init(XV_INIT_ARGC_PTR_ARGV, &argc, argv, NULL);
- X
- X frame = (Frame)xv_create(XV_NULL, FRAME, NULL);
- X
- X canvas = (Canvas)xv_create(frame, CANVAS,
- X XV_WIDTH, 400,
- X XV_HEIGHT, 200,
- X CANVAS_X_PAINT_WINDOW, TRUE,
- X CANVAS_REPAINT_PROC, my_repaint_proc,
- X NULL);
- X window_fit(frame);
- X
- X dpy = (Display *)xv_get(frame, XV_DISPLAY);
- X font = (Xv_Font)xv_find(frame, FONT, FONT_NAME, "courier", NULL);
- X if (!font) {
- X fprintf(stderr, "%s: cannot use font: courier.\n", argv[0]);
- X font = (Xv_Font)xv_get(frame, XV_FONT);
- X }
- X
- X /* Create a GC to use with Xlib graphics -- set the fg/bg colors
- X * and set the Font, which is the XV_XID of the XView font object.
- X */
- X gcvalues.font = (Font)xv_get(font, XV_XID);
- X gcvalues.foreground = BlackPixel(dpy, DefaultScreen(dpy));
- X gcvalues.background = WhitePixel(dpy, DefaultScreen(dpy));
- X gcvalues.graphics_exposures = False;
- X gc = XCreateGC(dpy, RootWindow(dpy, DefaultScreen(dpy)),
- X GCForeground | GCBackground | GCFont | GCGraphicsExposures,
- X &gcvalues);
- X
- X /* Assign the gc to the canvas object so we can use the same gc
- X * each time we draw into the canvas. Also avoids a global
- X * variable to store the GC.
- X */
- X xv_set(canvas, XV_KEY_DATA, GC_KEY, gc, NULL);
- X xv_main_loop(frame);
- X}
- X
- X/*
- X * Called every time the window needs repainting.
- X */
- Xvoid
- Xmy_repaint_proc(canvas, pw, dpy, xwin, xrects)
- XCanvas canvas;
- XXv_Window pw;
- XDisplay *dpy;
- XWindow xwin;
- XXv_xrectlist *xrects;
- X{
- X GC gc = (GC)xv_get(canvas, XV_KEY_DATA, GC_KEY);
- X
- X XDrawString(dpy, xwin, gc, 10, 20,
- X "Hello World", 11); /* 11 = strlen("Hello World") */
- X}
- END_OF_FILE
- if test 2446 -ne `wc -c <'xview.demos/fonts/simple_font.c'`; then
- echo shar: \"'xview.demos/fonts/simple_font.c'\" unpacked with wrong size!
- fi
- # end of 'xview.demos/fonts/simple_font.c'
- fi
- if test -f 'xview.demos/fonts/type_font.c' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'xview.demos/fonts/type_font.c'\"
- else
- echo shar: Extracting \"'xview.demos/fonts/type_font.c'\" \(2710 characters\)
- sed "s/^X//" >'xview.demos/fonts/type_font.c' <<'END_OF_FILE'
- X/*
- X * simple_font.c -- very simple program showing how to render text
- X * using fonts loaded by XView.
- X */
- X#include <ctype.h>
- X#include <X11/X.h>
- X#include <X11/Xlib.h>
- X#include <xview/xview.h>
- X#include <xview/panel.h>
- X#include <xview/font.h>
- X
- XDisplay *dpy;
- XGC gc;
- XXFontStruct *font_info;
- X
- Xmain(argc, argv)
- Xint argc;
- Xchar *argv[];
- X{
- X Frame frame;
- X Panel panel;
- X Canvas canvas;
- X XGCValues gcvalues;
- X Xv_Font font;
- X void my_event_proc();
- X extern void exit();
- X
- X xv_init(XV_INIT_ARGC_PTR_ARGV, &argc, argv, NULL);
- X
- X frame = (Frame)xv_create(XV_NULL, FRAME,
- X FRAME_LABEL, argv[0],
- X NULL);
- X
- X panel = (Panel)xv_create(frame, PANEL,
- X PANEL_LAYOUT, PANEL_VERTICAL,
- X NULL);
- X xv_create(panel, PANEL_BUTTON,
- X PANEL_LABEL_STRING, "Quit",
- X PANEL_NOTIFY_PROC, exit,
- X NULL);
- X window_fit(panel);
- X
- X canvas = (Canvas)xv_create(frame, CANVAS,
- X XV_WIDTH, 400,
- X XV_HEIGHT, 200,
- X CANVAS_X_PAINT_WINDOW, TRUE,
- X NULL);
- X xv_set(canvas_paint_window(canvas),
- X WIN_EVENT_PROC, my_event_proc,
- X NULL);
- X
- X window_fit(frame);
- X
- X dpy = (Display *)xv_get(frame, XV_DISPLAY);
- X font = (Xv_Font)xv_get(frame, XV_FONT);
- X font_info = (XFontStruct *)xv_get(font, FONT_INFO);
- X
- X gcvalues.font = (Font)xv_get(font, XV_XID);
- X gcvalues.foreground = BlackPixel(dpy, DefaultScreen(dpy));
- X gcvalues.background = WhitePixel(dpy, DefaultScreen(dpy));
- X gcvalues.graphics_exposures = False;
- X gc = XCreateGC(dpy, RootWindow(dpy, DefaultScreen(dpy)),
- X GCForeground | GCBackground | GCFont | GCGraphicsExposures, &gcvalues);
- X
- X xv_main_loop(frame);
- X}
- X
- Xvoid
- Xmy_event_proc(win, event)
- XXv_Window win;
- XEvent *event;
- X{
- X static int x = 10, y = 10;
- X Window xwin = (Window)xv_get(win, XV_XID);
- X char c;
- X
- X if (event_is_up(event))
- X return;
- X
- X if (event_is_ascii(event)) {
- X c = (char)event_id(event);
- X if (c == '\n' || c == '\r') {
- X y += font_info->max_bounds.ascent +
- X font_info->max_bounds.descent;
- X x = 10;
- X } else if (c == 7 || c == 127) { /* backspace or delete */
- X if (x > 10)
- X x -= XTextWidth(font_info, "m", 1);
- X /* use XDrawImageString to overwrite previous text */
- X XDrawImageString(dpy, xwin, gc, x, y, " ", 2);
- X } else {
- X XDrawString(dpy, xwin, gc, x, y, &c, 1);
- X x += XTextWidth(font_info, &c, 1);
- X }
- X } else if (event_action(event) == ACTION_SELECT) {
- X x = event_x(event);
- X y = event_y(event);
- X }
- X}
- END_OF_FILE
- if test 2710 -ne `wc -c <'xview.demos/fonts/type_font.c'`; then
- echo shar: \"'xview.demos/fonts/type_font.c'\" unpacked with wrong size!
- fi
- # end of 'xview.demos/fonts/type_font.c'
- fi
- if test -f 'xview.demos/icons/closed.icon' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'xview.demos/icons/closed.icon'\"
- else
- echo shar: Extracting \"'xview.demos/icons/closed.icon'\" \(1933 characters\)
- sed "s/^X//" >'xview.demos/icons/closed.icon' <<'END_OF_FILE'
- X/* Format_version=1, Width=64, Height=64, Depth=1, Valid_bits_per_item=16
- X */
- X 0x0000,0x0000,0x0000,0x0000,0x00FF,0xFFFF,0xFFFF,0xFF00,
- X 0x0080,0x0000,0x0000,0x0100,0x009F,0xFFFF,0xFFFF,0xF900,
- X 0x0090,0x0002,0x4000,0x0900,0x0090,0x0002,0x4000,0x0900,
- X 0x0090,0x0002,0x4000,0x0900,0x0090,0x0042,0x4000,0x0900,
- X 0x0090,0x1082,0x4021,0x0900,0x0090,0x2102,0x4042,0x0900,
- X 0x0090,0x4202,0x4084,0x0900,0x0090,0x8402,0x4108,0x0900,
- X 0x0091,0x0802,0x4210,0x0900,0x0090,0x1042,0x4020,0x8900,
- X 0x0090,0x2082,0x4041,0x0900,0x0090,0x4102,0x4082,0x0900,
- X 0x0090,0x8202,0x4104,0x0900,0x0091,0x0402,0x4208,0x0900,
- X 0x0090,0x0802,0x4010,0x0900,0x0090,0x0002,0x4000,0x0900,
- X 0x0090,0x0002,0x4000,0x0900,0x0090,0x0002,0x4000,0x0900,
- X 0x0090,0x0002,0x4000,0x0900,0x0090,0x0002,0x4000,0x0900,
- X 0x0090,0x0002,0x4000,0x0900,0x009F,0xFFFE,0x7FFF,0xF900,
- X 0x0090,0x0000,0x0000,0x0900,0x0090,0x0000,0x0000,0x0900,
- X 0x009F,0xFFFE,0x7FFF,0xF900,0x0090,0x0002,0x4000,0x0900,
- X 0x0090,0x0002,0x4000,0x0900,0x0090,0x0002,0x4000,0x0900,
- X 0x0090,0x2002,0x4000,0x0900,0x0090,0x4082,0x4104,0x0900,
- X 0x0090,0x8102,0x4208,0x0900,0x0091,0x0202,0x4410,0x0900,
- X 0x0092,0x0402,0x4820,0x0900,0x0090,0x0802,0x4042,0x0900,
- X 0x0090,0x1042,0x4084,0x0900,0x0090,0x2082,0x4108,0x0900,
- X 0x0090,0x4102,0x4210,0x0900,0x0090,0x8202,0x4420,0x0900,
- X 0x0091,0x0002,0x4800,0x0900,0x0090,0x0002,0x4000,0x0900,
- X 0x0090,0x0002,0x4000,0x0900,0x0090,0x0002,0x4000,0x0900,
- X 0x009F,0xFFFF,0xFFFF,0xF900,0x0090,0x0000,0x0000,0x0900,
- X 0x0090,0x001F,0xF800,0x0900,0x0090,0x001F,0xF800,0x0900,
- X 0x0090,0x0000,0x0000,0x0900,0x009F,0xFFFF,0xFFFF,0xF900,
- X 0x0080,0x0000,0x0000,0x0100,0x0080,0x0000,0x0000,0x0100,
- X 0x00FF,0xFFFF,0xFFFF,0xFF00,0x0000,0x0000,0x0000,0x0000,
- X 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
- X 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
- X 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
- X 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000
- END_OF_FILE
- if test 1933 -ne `wc -c <'xview.demos/icons/closed.icon'`; then
- echo shar: \"'xview.demos/icons/closed.icon'\" unpacked with wrong size!
- fi
- # end of 'xview.demos/icons/closed.icon'
- fi
- if test -f 'xview.demos/menus/menu.c' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'xview.demos/menus/menu.c'\"
- else
- echo shar: Extracting \"'xview.demos/menus/menu.c'\" \(2412 characters\)
- sed "s/^X//" >'xview.demos/menus/menu.c' <<'END_OF_FILE'
- X/*
- X * xv_menu.c -
- X * Demonstrate the use of an XView menu in a canvas subwindow.
- X * Menu is brought up with right mouse button and displays
- X * choice made in the canvas. Allow menu to be pinned.
- X */
- X#include <xview/xview.h>
- X#include <xview/canvas.h>
- X
- XFrame frame;
- X
- Xmain(argc,argv)
- Xint argc;
- Xchar *argv[];
- X{
- X Canvas canvas;
- X Menu menu;
- X void my_notify_proc(), my_event_proc();
- X extern void exit();
- X
- X xv_init(XV_INIT_ARGC_PTR_ARGV, &argc, argv, NULL);
- X
- X frame = (Frame)xv_create(NULL, FRAME,
- X FRAME_LABEL, argv[0],
- X NULL);
- X canvas = (Canvas)xv_create(frame, CANVAS,
- X XV_WIDTH, 300,
- X XV_HEIGHT, 200,
- X NULL);
- X menu = (Menu)xv_create(NULL, MENU,
- X MENU_TITLE_ITEM, "Junk",
- X MENU_STRINGS, "Yes", "No", "Maybe", NULL,
- X MENU_NOTIFY_PROC, my_notify_proc,
- X MENU_ITEM,
- X MENU_STRING, "Save",
- X MENU_NOTIFY_PROC, my_notify_proc,
- X MENU_PULLRIGHT,
- X xv_create(canvas, MENU,
- X MENU_GEN_PIN_WINDOW, frame, "Save",
- X MENU_ITEM,
- X MENU_STRING, "Update Changes",
- X MENU_NOTIFY_PROC, my_notify_proc,
- X NULL,
- X NULL),
- X NULL,
- X MENU_ITEM,
- X MENU_STRING, "Quit",
- X MENU_NOTIFY_PROC, exit,
- X NULL,
- X NULL);
- X
- X xv_set(canvas_paint_window(canvas),
- X WIN_CONSUME_EVENTS, WIN_MOUSE_BUTTONS, NULL,
- X WIN_EVENT_PROC, my_event_proc,
- X /* associate the menu to the canvas win so we can retreive it easily */
- X WIN_CLIENT_DATA, menu,
- X NULL);
- X
- X window_fit(frame);
- X window_main_loop(frame);
- X}
- X
- X/*
- X * my_notify_proc - Display menu selection in frame header.
- X */
- Xvoid
- Xmy_notify_proc(menu, menu_item)
- XMenu menu;
- XMenu_item menu_item;
- X{
- X xv_set(frame,
- X FRAME_LABEL, xv_get(menu_item, MENU_STRING),
- X NULL);
- X}
- X
- X/*
- X * my_event_proc - Call menu_show() to display menu on right mouse button push.
- X */
- Xvoid
- Xmy_event_proc(window, event)
- XXv_Window window;
- XEvent *event;
- X{
- X if (event_action(event) == ACTION_MENU && event_is_down(event)) {
- X Menu menu = (Menu)xv_get(window, WIN_CLIENT_DATA);
- X menu_show(menu, window, event, NULL);
- X }
- X}
- END_OF_FILE
- if test 2412 -ne `wc -c <'xview.demos/menus/menu.c'`; then
- echo shar: \"'xview.demos/menus/menu.c'\" unpacked with wrong size!
- fi
- # end of 'xview.demos/menus/menu.c'
- fi
- if test -f 'xview.demos/menus/simple_menu.c' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'xview.demos/menus/simple_menu.c'\"
- else
- echo shar: Extracting \"'xview.demos/menus/simple_menu.c'\" \(2248 characters\)
- sed "s/^X//" >'xview.demos/menus/simple_menu.c' <<'END_OF_FILE'
- X/*
- X * simple_menu.c -
- X * Demonstrate the use of an XView menu in a canvas subwindow.
- X * A Menu is brought up with the MENU mouse button. The choices
- X * in the menu toggle the display of the scrollbar next to the canvas.
- X */
- X#include <xview/xview.h>
- X#include <xview/canvas.h>
- X#include <xview/scrollbar.h>
- X
- X#define SCROLLBAR_KEY 100
- X#define MENU_KEY 200
- X
- Xmain(argc,argv)
- Xint argc;
- Xchar *argv[];
- X{
- X Frame frame;
- X Canvas canvas;
- X Scrollbar scrollbar;
- X Menu menu;
- X void menu_notify_proc(), pw_event_proc();
- X
- X xv_init(XV_INIT_ARGC_PTR_ARGV, &argc, argv, NULL);
- X
- X /*
- X * Create a frame, canvas and menu.
- X * A canvas receives input in its canvas_paint_window().
- X */
- X frame = (Frame)xv_create(NULL, FRAME,
- X FRAME_LABEL, argv[0],
- X NULL);
- X canvas = (Canvas)xv_create(frame, CANVAS,
- X XV_WIDTH, 300,
- X XV_HEIGHT, 200,
- X NULL);
- X scrollbar = (Scrollbar)xv_create(canvas, SCROLLBAR,
- X SCROLLBAR_DIRECTION, SCROLLBAR_VERTICAL,
- X NULL);
- X
- X menu = (Menu)xv_create(canvas, MENU,
- X MENU_TITLE_ITEM, "Scrollbar",
- X MENU_STRINGS, "On", "Off", NULL,
- X MENU_NOTIFY_PROC, menu_notify_proc,
- X XV_KEY_DATA, SCROLLBAR_KEY, scrollbar,
- X NULL);
- X
- X xv_set(canvas_paint_window(canvas),
- X WIN_EVENT_PROC, pw_event_proc,
- X XV_KEY_DATA, MENU_KEY, menu,
- X NULL);
- X
- X window_fit(frame);
- X window_main_loop(frame);
- X}
- X
- X/*
- X * menu_notify_proc - toggle the display of the scrollbar
- X * based on which menu item was chosen.
- X */
- Xvoid
- Xmenu_notify_proc(menu, menu_item)
- XMenu menu;
- XMenu_item menu_item;
- X{
- X char *menu_choice = (char *)xv_get(menu_item, MENU_STRING);
- X int show_it = !strcmp(menu_choice, "On");
- X
- X xv_set(xv_get(menu, XV_KEY_DATA, SCROLLBAR_KEY),
- X XV_SHOW, show_it,
- X NULL);
- X}
- X
- X/*
- X * Call menu_show() to display menu.
- X */
- Xvoid
- Xpw_event_proc(canvas_pw, event)
- XXv_Window canvas_pw;
- XEvent *event;
- X{
- X if (event_action(event) == ACTION_MENU && event_is_down(event)) {
- X Menu menu = (Menu)xv_get(canvas_pw, XV_KEY_DATA, MENU_KEY);
- X menu_show(menu, canvas_pw, event, NULL);
- X }
- X}
- END_OF_FILE
- if test 2248 -ne `wc -c <'xview.demos/menus/simple_menu.c'`; then
- echo shar: \"'xview.demos/menus/simple_menu.c'\" unpacked with wrong size!
- fi
- # end of 'xview.demos/menus/simple_menu.c'
- fi
- if test -f 'xview.demos/menus/xv_menu.c' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'xview.demos/menus/xv_menu.c'\"
- else
- echo shar: Extracting \"'xview.demos/menus/xv_menu.c'\" \(2427 characters\)
- sed "s/^X//" >'xview.demos/menus/xv_menu.c' <<'END_OF_FILE'
- X/*
- X * xv_menu.c -
- X * Demonstrate the use of an XView menu in a canvas subwindow.
- X * Menu is brought up with right mouse button and the selected
- X * choice is displayed in the canvas. Allows menu to be pinned.
- X */
- X#include <xview/xview.h>
- X#include <xview/canvas.h>
- X
- XFrame frame;
- X
- Xmain(argc,argv)
- Xint argc;
- Xchar *argv[];
- X{
- X Canvas canvas;
- X Menu menu;
- X void my_notify_proc(), my_event_proc();
- X extern void exit();
- X
- X xv_init(XV_INIT_ARGC_PTR_ARGV, &argc, argv, NULL);
- X
- X frame = (Frame)xv_create(NULL, FRAME,
- X FRAME_LABEL, argv[0],
- X NULL);
- X canvas = (Canvas)xv_create(frame, CANVAS,
- X XV_WIDTH, 300,
- X XV_HEIGHT, 200,
- X NULL);
- X menu = (Menu)xv_create(NULL, MENU,
- X MENU_TITLE_ITEM, "Junk",
- X MENU_STRINGS, "Yes", "No", "Maybe", NULL,
- X MENU_NOTIFY_PROC, my_notify_proc,
- X MENU_ITEM,
- X MENU_STRING, "Save",
- X MENU_NOTIFY_PROC, my_notify_proc,
- X MENU_PULLRIGHT,
- X xv_create(canvas, MENU,
- X MENU_GEN_PIN_WINDOW, frame, "Save",
- X MENU_ITEM,
- X MENU_STRING, "Update Changes",
- X MENU_NOTIFY_PROC, my_notify_proc,
- X NULL,
- X NULL),
- X NULL,
- X MENU_ITEM,
- X MENU_STRING, "Quit",
- X MENU_NOTIFY_PROC, exit,
- X NULL,
- X NULL);
- X
- X xv_set(canvas_paint_window(canvas),
- X WIN_CONSUME_EVENTS, WIN_MOUSE_BUTTONS, NULL,
- X WIN_EVENT_PROC, my_event_proc,
- X /* associate the menu to the canvas win so we can retrieve it easily */
- X WIN_CLIENT_DATA, menu,
- X NULL);
- X
- X window_fit(frame);
- X window_main_loop(frame);
- X}
- X
- X/*
- X * my_notify_proc - Display menu selection in frame header.
- X */
- Xvoid
- Xmy_notify_proc(menu, menu_item)
- XMenu menu;
- XMenu_item menu_item;
- X{
- X xv_set(frame,
- X FRAME_LABEL, xv_get(menu_item, MENU_STRING),
- X NULL);
- X}
- X
- X/*
- X * my_event_proc - Call menu_show() to display menu on right mouse button push.
- X */
- Xvoid
- Xmy_event_proc(window, event)
- XXv_Window window;
- XEvent *event;
- X{
- X if (event_action(event) == ACTION_MENU && event_is_down(event)) {
- X Menu menu = (Menu)xv_get(window, WIN_CLIENT_DATA);
- X menu_show(menu, window, event, NULL);
- X }
- X}
- X
- X
- END_OF_FILE
- if test 2427 -ne `wc -c <'xview.demos/menus/xv_menu.c'`; then
- echo shar: \"'xview.demos/menus/xv_menu.c'\" unpacked with wrong size!
- fi
- # end of 'xview.demos/menus/xv_menu.c'
- fi
- if test -f 'xview.demos/misc/fullscreen.c' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'xview.demos/misc/fullscreen.c'\"
- else
- echo shar: Extracting \"'xview.demos/misc/fullscreen.c'\" \(2150 characters\)
- sed "s/^X//" >'xview.demos/misc/fullscreen.c' <<'END_OF_FILE'
- X/*
- X * fullscreen.c
- X * Demonstrate the fullscreen package. Create a panel button that
- X * creates a fullscreen instance, thus grabbing the X server. User
- X * presses a mouse button to release the server.
- X */
- X#include <xview/xview.h>
- X#include <xview/panel.h>
- X#include <xview/fullscreen.h>
- X
- Xmain(argc, argv)
- Xchar *argv[];
- X{
- X Frame frame;
- X Panel panel;
- X void exit(), grab();
- X
- X xv_init(XV_INIT_ARGC_PTR_ARGV, &argc, argv, NULL);
- X
- X frame = (Frame)xv_create(XV_NULL, FRAME, NULL);
- X panel = (Panel)xv_create(frame, PANEL, NULL);
- X (void) xv_create(panel, PANEL_BUTTON,
- X PANEL_LABEL_STRING, "Quit",
- X PANEL_NOTIFY_PROC, exit,
- X NULL);
- X (void) xv_create(panel, PANEL_BUTTON,
- X PANEL_LABEL_STRING, "Fullscreen",
- X PANEL_NOTIFY_PROC, grab,
- X NULL);
- X
- X window_fit(panel);
- X window_fit(frame);
- X xv_main_loop(frame);
- X}
- X
- X/*
- X * notify procedure for when the "Fullscreen" button is pushed.
- X * Create a fullscreen instance, scan for a button event, then
- X * destroy it.
- X */
- Xvoid
- Xgrab(item, event)
- XPanel_item item;
- XEvent *event;
- X{
- X Panel panel = (Panel)xv_get(item, PANEL_PARENT_PANEL);
- X Fullscreen fs;
- X Inputmask im;
- X
- X /* set up an input mask for the call to xv_input_readevent(). */
- X win_setinputcodebit(&im, MS_LEFT);
- X win_setinputcodebit(&im, MS_MIDDLE);
- X win_setinputcodebit(&im, MS_RIGHT);
- X win_setinputcodebit(&im, LOC_MOVE);
- X
- X /*
- X * Create a fullscreen object (initialize X server grab).
- X * Specify which events should be allowed to pass through.
- X * These events should match the input mask coded above.
- X */
- X fs = xv_create(panel, FULLSCREEN,
- X WIN_CONSUME_EVENTS,
- X WIN_MOUSE_BUTTONS, LOC_MOVE, NULL,
- X NULL);
- X
- X /* loop till user generates a button event */
- X while (xv_input_readevent(panel, event, TRUE, TRUE, &im) != -1)
- X if (event_is_button(event))
- X break;
- X
- X /* destroy the fullscreen (release the X server grab) */
- X xv_destroy(fs);
- X
- X /* report which button was pushed. */
- X printf("event was button %d\n", event_id(event) - BUT_FIRST + 1);
- X}
- END_OF_FILE
- if test 2150 -ne `wc -c <'xview.demos/misc/fullscreen.c'`; then
- echo shar: \"'xview.demos/misc/fullscreen.c'\" unpacked with wrong size!
- fi
- # end of 'xview.demos/misc/fullscreen.c'
- fi
- if test -f 'xview.demos/notice/trigger_notice.c' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'xview.demos/notice/trigger_notice.c'\"
- else
- echo shar: Extracting \"'xview.demos/notice/trigger_notice.c'\" \(2053 characters\)
- sed "s/^X//" >'xview.demos/notice/trigger_notice.c' <<'END_OF_FILE'
- X/*
- X * trigger_notice.c -- Demonstrate the use of triggers in notices.
- X */
- X#include <xview/xview.h>
- X#include <xview/panel.h>
- X#include <xview/notice.h>
- X
- Xmain(argc,argv)
- Xint argc;
- Xchar *argv[];
- X{
- X Frame frame;
- X Panel panel;
- X Xv_opaque my_notify_proc();
- X extern void exit();
- X
- X /*
- X * Initialize XView, create a frame, a panel and one panel button.
- X */
- X xv_init(XV_INIT_ARGS, argc, argv, NULL);
- X frame = (Frame)xv_create(XV_NULL, FRAME, NULL);
- X panel = (Panel)xv_create(frame, PANEL, NULL);
- X (void) xv_create(panel, PANEL_BUTTON,
- X PANEL_LABEL_STRING, "Quit",
- X PANEL_NOTIFY_PROC, exit,
- X NULL);
- X (void) xv_create(panel, PANEL_BUTTON,
- X PANEL_LABEL_STRING, "Move",
- X PANEL_NOTIFY_PROC, my_notify_proc,
- X NULL);
- X
- X /* make sure everything looks good */
- X window_fit(panel);
- X window_fit(frame);
- X
- X /* start window event processing */
- X xv_main_loop(frame);
- X}
- X
- X/*
- X * my_notify_proc() -- called when the user selects the "Move"
- X * panel button. Put up a notice_prompt to get new coordinates
- X * to move the main window.
- X */
- XXv_opaque
- Xmy_notify_proc(item, event)
- XPanel_item item;
- XEvent *event;
- X{
- X int result, x, y;
- X Panel panel = (Panel)xv_get(item, PANEL_PARENT_PANEL);
- X Frame frame = (Frame)xv_get(panel, XV_OWNER);
- X
- X x = event_x(event), y = event_y(event);
- X printf("original click relative to panel: %d, %d\n", x, y);
- X result = notice_prompt(panel, event,
- X NOTICE_MESSAGE_STRINGS,
- X "You may move the window to a new location specified by",
- X "clicking the Left Mouse Button somewhere on the screen.",
- X NULL,
- X NOTICE_TRIGGER, MS_LEFT,
- X NOTICE_NO_BEEPING, TRUE,
- X NULL);
- X
- X if (result == NOTICE_TRIGGERED) {
- X x += event_x(event) + (int)xv_get(frame, XV_X);
- X y += event_y(event) + (int)xv_get(frame, XV_Y);
- X printf("screen x,y: %d, %d\n", x, y);
- X xv_set(frame, XV_X, x, XV_Y, y, NULL);
- X }
- X}
- END_OF_FILE
- if test 2053 -ne `wc -c <'xview.demos/notice/trigger_notice.c'`; then
- echo shar: \"'xview.demos/notice/trigger_notice.c'\" unpacked with wrong size!
- fi
- # end of 'xview.demos/notice/trigger_notice.c'
- fi
- if test -f 'xview.demos/notifier/animate.c' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'xview.demos/notifier/animate.c'\"
- else
- echo shar: Extracting \"'xview.demos/notifier/animate.c'\" \(3951 characters\)
- sed "s/^X//" >'xview.demos/notifier/animate.c' <<'END_OF_FILE'
- X/*
- X * animate.c -- use glyphs from the "icon" font distributed with XView
- X * to do frame-by-frame animation.
- X */
- X#include <stdio.h>
- X#include <ctype.h>
- X#include <X11/X.h>
- X#include <X11/Xlib.h>
- X#include <X11/Xos.h> /* for <sys/time.h> */
- X#include <xview/xview.h>
- X#include <xview/panel.h>
- X#include <xview/font.h>
- X#include <xview/notify.h>
- X
- XFrame frame;
- XDisplay *dpy;
- XGC gc;
- XWindow canvas_win;
- XNotify_value animate();
- Xstruct itimerval timer;
- X
- X#define ArraySize(x) (sizeof(x)/sizeof(x[0]))
- Xchar *horses[] = { "N", "O", "P", "Q", "R" };
- Xchar *boys[] = { "\007", "\005", "\007", "\010" };
- Xchar *men[] = { "\\", "]", "Y", "Z", "[" };
- Xchar *eyes[] = {
- X "2", "5", "4", "3", "4", "5",
- X "2", "1", "0", "/", "0", "1"
- X};
- X
- Xint max_images = ArraySize(horses);
- Xchar **images = horses;
- Xint cnt;
- X
- Xmain(argc, argv)
- Xint argc;
- Xchar *argv[];
- X{
- X Panel panel;
- X Canvas canvas;
- X XGCValues gcvalues;
- X Xv_Font _font;
- X XFontStruct *font;
- X void adjust_speed(), change_glyph();
- X extern void exit();
- X
- X xv_init(XV_INIT_ARGC_PTR_ARGV, &argc, argv, NULL);
- X
- X frame = (Frame)xv_create(XV_NULL, FRAME,
- X FRAME_LABEL, argv[0],
- X FRAME_SHOW_FOOTER, TRUE,
- X NULL);
- X
- X panel = (Panel)xv_create(frame, PANEL,
- X PANEL_LAYOUT, PANEL_VERTICAL,
- X NULL);
- X xv_create(panel, PANEL_BUTTON,
- X PANEL_LABEL_STRING, "Quit",
- X PANEL_NOTIFY_PROC, exit,
- X NULL);
- X xv_create(panel, PANEL_SLIDER,
- X PANEL_LABEL_STRING, "Millisecs Between Frames",
- X PANEL_VALUE, 0,
- X PANEL_MAX_VALUE, 120,
- X PANEL_NOTIFY_PROC, adjust_speed,
- X NULL);
- X xv_create(panel, PANEL_CHOICE,
- X PANEL_LABEL_STRING, "Glyphs",
- X PANEL_LAYOUT, PANEL_HORIZONTAL,
- X PANEL_DISPLAY_LEVEL, PANEL_ALL,
- X PANEL_CHOICE_STRINGS, "Horse", "Man", "Boy", "Eye", NULL,
- X PANEL_NOTIFY_PROC, change_glyph,
- X NULL);
- X window_fit(panel);
- X
- X canvas = (Canvas)xv_create(frame, CANVAS,
- X XV_WIDTH, 64,
- X XV_HEIGHT, 64,
- X CANVAS_X_PAINT_WINDOW, TRUE,
- X NULL);
- X canvas_win = (Window)xv_get(canvas_paint_window(canvas), XV_XID);
- X
- X window_fit(frame);
- X
- X dpy = (Display *)xv_get(frame, XV_DISPLAY);
- X _font = (Xv_Font)xv_find(frame, FONT,
- X FONT_NAME, "icon",
- X NULL);
- X font = (XFontStruct *)xv_get(_font, FONT_INFO);
- X
- X gcvalues.font = font->fid;
- X gcvalues.foreground = BlackPixel(dpy, DefaultScreen(dpy));
- X gcvalues.background = WhitePixel(dpy, DefaultScreen(dpy));
- X gcvalues.graphics_exposures = False;
- X gc = XCreateGC(dpy, RootWindow(dpy, DefaultScreen(dpy)),
- X GCForeground | GCBackground | GCFont | GCGraphicsExposures,
- X &gcvalues);
- X
- X xv_main_loop(frame);
- X}
- X
- Xvoid
- Xchange_glyph(item, value)
- XPanel_item item;
- Xint value;
- X{
- X cnt = 0;
- X if (value == 0) {
- X max_images = ArraySize(horses);
- X images = horses;
- X } else if (value == 1) {
- X max_images = ArraySize(men);
- X images = men;
- X } else if (value == 2) {
- X max_images = ArraySize(boys);
- X images = boys;
- X } else if (value == 3) {
- X max_images = ArraySize(eyes);
- X images = eyes;
- X }
- X XClearWindow(dpy, canvas_win);
- X}
- X
- X/*ARGSUSED*/
- XNotify_value
- Xanimate()
- X{
- X XDrawImageString(dpy, canvas_win, gc, 5, 40, images[cnt], 1);
- X cnt = (cnt + 1) % max_images;
- X
- X return NOTIFY_DONE;
- X}
- X
- Xvoid
- Xadjust_speed(item, value)
- XPanel_item item;
- Xint value;
- X{
- X if (value > 0) {
- X timer.it_value.tv_usec = (value + 20) * 1000;
- X timer.it_interval.tv_usec = (value + 20) * 1000;
- X notify_set_itimer_func(frame, animate,
- X ITIMER_REAL, &timer, NULL);
- X } else
- X /* turn it off */
- X notify_set_itimer_func(frame, NOTIFY_FUNC_NULL,
- X ITIMER_REAL, NULL, NULL);
- X}
- END_OF_FILE
- if test 3951 -ne `wc -c <'xview.demos/notifier/animate.c'`; then
- echo shar: \"'xview.demos/notifier/animate.c'\" unpacked with wrong size!
- fi
- # end of 'xview.demos/notifier/animate.c'
- fi
- if test -f 'xview.demos/panels/Imakefile' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'xview.demos/panels/Imakefile'\"
- else
- echo shar: Extracting \"'xview.demos/panels/Imakefile'\" \(753 characters\)
- sed "s/^X//" >'xview.demos/panels/Imakefile' <<'END_OF_FILE'
- X#
- X# @(#)Imakefile 1.3 89/12/06 SMI
- X#
- X# Imakefile for panels
- X#
- X# LIBRARY_DEST is the location of the XView libraries
- X# HEADER_DEST is the location of the XView header files
- X# LIBDIR is the directory containing the X11 library (libX11.a)
- X#
- X
- XLIBRARY_DEST=/home/xview/usr/lib
- XHEADER_DEST=/home/xview/usr/include
- X
- XLIBDIR=/home/X11/lib
- XLDFLAGS=-L$(LIBRARY_DEST) -L$(LIBDIR) -lxview -lX11
- XINCLUDES= -I.. -I$(HEADER_DEST) -I$(TOP) -DSTANDALONE
- X
- X# Uncomment the following line to use libxvol.a and libxvin.a
- X#
- X#LDFLAGS=-L$(LIBRARY_DEST) -L$(LIBDIR) -lxvol -lxvin -lX11
- X
- XTARGETS=btn_menu choices client_data item_move list_glyphs \
- X panel_repaint repaint simple_panel stop_frame
- X
- Xall: $(TARGETS)
- X
- X${TARGETS}: $$@.c $$@.o
- X ${CC} ${CFLAGS} ${LDFLAGS} -o $@ $@.o
- END_OF_FILE
- if test 753 -ne `wc -c <'xview.demos/panels/Imakefile'`; then
- echo shar: \"'xview.demos/panels/Imakefile'\" unpacked with wrong size!
- fi
- # end of 'xview.demos/panels/Imakefile'
- fi
- if test -f 'xview.demos/panels/list_glyphs.c' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'xview.demos/panels/list_glyphs.c'\"
- else
- echo shar: Extracting \"'xview.demos/panels/list_glyphs.c'\" \(2414 characters\)
- sed "s/^X//" >'xview.demos/panels/list_glyphs.c' <<'END_OF_FILE'
- X/*
- X * list.c -- show a scrolling list with three items in it.
- X * Each item is an icon (a pattern) and a string.
- X */
- X#include <xview/xview.h>
- X#include <xview/panel.h>
- X#include <xview/svrimage.h>
- X
- X#define gray1_width 16
- X#define gray1_height 16
- Xstatic char gray1_bits[] = {
- X 0x55, 0x55, 0xaa, 0xaa, 0x55, 0x55, 0xaa, 0xaa, 0x55, 0x55,
- X 0xaa, 0xaa, 0x55, 0x55, 0xaa, 0xaa, 0x55, 0x55, 0xaa, 0xaa,
- X 0x55, 0x55, 0xaa, 0xaa, 0x55, 0x55, 0xaa, 0xaa, 0x55, 0x55,
- X 0xaa, 0xaa
- X};
- X
- X#define gray2_width 16
- X#define gray2_height 16
- Xstatic char gray2_bits[] = {
- X 0x11, 0x11, 0x00, 0x00, 0x44, 0x44, 0x00, 0x00, 0x11, 0x11,
- X 0x00, 0x00, 0x44, 0x44, 0x00, 0x00, 0x11, 0x11, 0x00, 0x00,
- X 0x44, 0x44, 0x00, 0x00, 0x11, 0x11, 0x00, 0x00, 0x44, 0x44,
- X 0x00, 0x00
- X};
- X
- X#define gray3_width 16
- X#define gray3_height 16
- Xstatic char gray3_bits[] = {
- X 0x22, 0x22, 0xee, 0xee, 0x33, 0x33, 0xee, 0xee, 0x22, 0x22,
- X 0xee, 0xee, 0x33, 0x33, 0xee, 0xee, 0x22, 0x22, 0xee, 0xee,
- X 0x33, 0x33, 0xee, 0xee, 0x22, 0x22, 0xee, 0xee, 0x33, 0x33,
- X 0xee, 0xee
- X};
- X
- Xmain(argc, argv)
- Xint argc;
- Xchar *argv[];
- X{
- X Frame frame;
- X Panel panel;
- X Server_image gray1, gray2, gray3;
- X extern void exit();
- X
- X xv_init(XV_INIT_ARGS, argc, argv, NULL);
- X
- X gray1 = (Server_image)xv_create(NULL, SERVER_IMAGE,
- X XV_WIDTH, gray1_width,
- X XV_HEIGHT, gray1_height,
- X SERVER_IMAGE_BITS, gray1_bits,
- X NULL);
- X gray2 = (Server_image)xv_create(NULL, SERVER_IMAGE,
- X XV_WIDTH, gray2_width,
- X XV_HEIGHT, gray2_height,
- X SERVER_IMAGE_BITS, gray2_bits,
- X NULL);
- X gray3 = (Server_image)xv_create(NULL, SERVER_IMAGE,
- X XV_WIDTH, gray3_width,
- X XV_HEIGHT, gray3_height,
- X SERVER_IMAGE_BITS, gray3_bits,
- X NULL);
- X frame = (Frame)xv_create(NULL, FRAME, NULL);
- X panel = (Panel)xv_create(frame, PANEL, NULL);
- X
- X (void) xv_create(panel, PANEL_BUTTON,
- X PANEL_LABEL_STRING, "quit",
- X PANEL_NOTIFY_PROC, exit,
- X NULL);
- X
- X (void) xv_create(panel, PANEL_LIST,
- X PANEL_LIST_ROW_HEIGHT, 16,
- X PANEL_LIST_GLYPHS, gray1, gray2, gray3, NULL,
- X PANEL_LIST_STRINGS, "Pattern1", "Pattern2", "Pattern3", NULL,
- X NULL);
- X
- X window_fit(panel);
- X window_fit(frame);
- X
- X xv_main_loop(frame);
- X}
- END_OF_FILE
- if test 2414 -ne `wc -c <'xview.demos/panels/list_glyphs.c'`; then
- echo shar: \"'xview.demos/panels/list_glyphs.c'\" unpacked with wrong size!
- fi
- # end of 'xview.demos/panels/list_glyphs.c'
- fi
- if test -f 'xview.demos/panels/panel_repaint.c' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'xview.demos/panels/panel_repaint.c'\"
- else
- echo shar: Extracting \"'xview.demos/panels/panel_repaint.c'\" \(2626 characters\)
- sed "s/^X//" >'xview.demos/panels/panel_repaint.c' <<'END_OF_FILE'
- X/*
- X * panel_repaint.c -- repaint a panel background without disturbing
- X * the repainting of panel items.
- X */
- X#include <xview/xview.h>
- X#include <xview/panel.h>
- X#include <xview/svrimage.h>
- X#include <X11/Xlib.h>
- X#include <X11/X.h>
- X#include <X11/bitmaps/gray1>
- X
- X#define PANEL_GC_KEY 101 /* any arbitrary number */
- X
- Xmain(argc, argv)
- Xint argc;
- Xchar *argv[];
- X{
- X Display *display;
- X Frame frame;
- X Panel panel;
- X int quit();
- X void panel_repaint();
- X XGCValues gcvalues;
- X Server_image grey;
- X
- X Mask gcmask = 0L;
- X GC gc;
- X
- X xv_init(XV_INIT_ARGC_PTR_ARGV, &argc, argv, NULL);
- X
- X frame = (Frame)xv_create(XV_NULL, FRAME, NULL);
- X panel = (Panel)xv_create(frame, PANEL,
- X PANEL_REPAINT_PROC, panel_repaint,
- X NULL);
- X
- X (void) xv_create(panel, PANEL_BUTTON,
- X PANEL_LABEL_STRING, "Quit",
- X PANEL_NOTIFY_PROC, quit,
- X PANEL_CLIENT_DATA, frame,
- X NULL);
- X
- X window_fit(frame);
- X
- X grey = (Server_image)xv_create(NULL, SERVER_IMAGE,
- X XV_WIDTH, gray1_width,
- X XV_HEIGHT, gray1_height,
- X SERVER_IMAGE_DEPTH, 1, /* clarify for completeness*/
- X SERVER_IMAGE_BITS, gray1_bits,
- X NULL);
- X
- X display = (Display *)xv_get(panel, XV_DISPLAY);
- X gcvalues.stipple = (Pixmap) xv_get(grey, XV_XID);
- X gcvalues.fill_style = FillOpaqueStippled;
- X gcvalues.plane_mask = 1L;
- X gcvalues.graphics_exposures = False;
- X gcvalues.foreground = BlackPixel(display, DefaultScreen(display));
- X gcvalues.background = WhitePixel(display, DefaultScreen(display));
- X gcmask = GCStipple | GCFillStyle | GCPlaneMask |
- X GCGraphicsExposures | GCForeground | GCBackground;
- X gc = XCreateGC(display, xv_get(panel, XV_XID), gcmask, &gcvalues);
- X
- X /* attach the GC to the panel for use by the repaint proc above */
- X xv_set(panel, XV_KEY_DATA, PANEL_GC_KEY, gc, NULL);
- X
- X xv_main_loop(frame);
- X exit(0);
- X}
- X
- X/*
- X * repaint procedure for the panel paints a gray pattern over the
- X * entire panel. Use the GC attached to the panel via XV_KEY_DATA.
- X */
- Xvoid
- Xpanel_repaint(panel, pw)
- XPanel panel;
- XXv_Window pw;
- X{
- X /* get the GC attached to the panel in main() */
- X GC gc = (GC)xv_get(panel, XV_KEY_DATA, PANEL_GC_KEY);
- X
- X /* call XFillRectangle on the entire size of the panel window */
- X XFillRectangle(xv_get(panel, XV_DISPLAY), xv_get(pw, XV_XID), gc,
- X 0, 0, xv_get(pw, XV_WIDTH), xv_get(pw, XV_HEIGHT));
- X}
- X
- Xquit(item)
- XPanel_item item;
- X{
- X Frame frame = (Frame)xv_get(item, PANEL_CLIENT_DATA);
- X xv_destroy_safe(frame);
- X}
- END_OF_FILE
- if test 2626 -ne `wc -c <'xview.demos/panels/panel_repaint.c'`; then
- echo shar: \"'xview.demos/panels/panel_repaint.c'\" unpacked with wrong size!
- fi
- # end of 'xview.demos/panels/panel_repaint.c'
- fi
- if test -f 'xview.demos/seln_svc/seln_line.c' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'xview.demos/seln_svc/seln_line.c'\"
- else
- echo shar: Extracting \"'xview.demos/seln_svc/seln_line.c'\" \(2643 characters\)
- sed "s/^X//" >'xview.demos/seln_svc/seln_line.c' <<'END_OF_FILE'
- X/*
- X * line_num.c -- demonstrate how to use the selection service to get
- X * the line number of the primary selection in a textsw.
- X */
- X#include <stdio.h>
- X#include <xview/xview.h>
- X#include <xview/textsw.h>
- X#include <xview/panel.h>
- X#include <xview/seln.h>
- X
- XTextsw textsw;
- X
- Xmain(argc, argv)
- Xchar *argv[];
- X{
- X Frame frame;
- X Panel panel;
- X void exit();
- X int seln_proc();
- X
- X xv_init(XV_INIT_ARGC_PTR_ARGV, &argc, argv, NULL);
- X
- X frame = (Frame)xv_create(NULL, FRAME,
- X FRAME_SHOW_FOOTER, TRUE,
- X NULL);
- X
- X panel = (Panel)xv_create(frame, PANEL,
- X WIN_WIDTH, WIN_EXTEND_TO_EDGE,
- X NULL);
- X
- X (void) xv_create(panel, PANEL_BUTTON,
- X PANEL_LABEL_STRING, "Quit",
- X PANEL_NOTIFY_PROC, exit,
- X NULL);
- X (void) xv_create(panel, PANEL_BUTTON,
- X PANEL_LABEL_STRING, "Get Selection",
- X PANEL_NOTIFY_PROC, seln_proc,
- X PANEL_CLIENT_DATA, frame,
- X NULL);
- X (void) xv_create(panel, PANEL_TEXT,
- X PANEL_LABEL_STRING, "No-op:",
- X PANEL_VALUE_DISPLAY_LENGTH, 30,
- X NULL);
- X
- X window_fit(panel);
- X
- X textsw = (Textsw)xv_create(frame, TEXTSW,
- X WIN_X, 0,
- X WIN_BELOW, panel,
- X WIN_ROWS, 10,
- X WIN_COLUMNS, 80,
- X TEXTSW_FILE_CONTENTS, "/etc/passwd",
- X NULL);
- X window_fit(frame);
- X xv_main_loop(frame);
- X}
- X
- Xint
- Xseln_proc(item, event)
- XPanel_item item;
- XEvent *event; /* unused */
- X{
- X Frame frame = (Frame)xv_get(item, PANEL_CLIENT_DATA);
- X Seln_holder holder;
- X Seln_request *buffer;
- X int line_number;
- X char *msg[32];
- X
- X /*
- X * get primary selection
- X */
- X holder = seln_inquire(SELN_PRIMARY);
- X /*
- X * ask for the data containing line number of the first
- X * character of the selection
- X */
- X buffer = seln_ask(&holder,
- X SELN_REQ_FAKE_LEVEL, SELN_LEVEL_LINE,
- X SELN_REQ_FIRST_UNIT, 0,
- X NULL);
- X /*
- X * determine the window that contains the selection
- X */
- X if (seln_holder_same_client(&holder, textsw)) {
- X xv_set(frame,
- X FRAME_LEFT_FOOTER, "selection in textsw",
- X NULL);
- X /*
- X * convert data into the line number
- X */
- X sprintf(msg, "Selection: line %ld",
- X *(long *)(buffer->data + 3 * sizeof(Seln_attribute)));
- X xv_set(frame,
- X FRAME_RIGHT_FOOTER, msg,
- X NULL);
- X } else
- X xv_set(frame,
- X FRAME_LEFT_FOOTER, "selection elsewhere",
- X NULL);
- X
- X return XV_OK;
- X}
- END_OF_FILE
- if test 2643 -ne `wc -c <'xview.demos/seln_svc/seln_line.c'`; then
- echo shar: \"'xview.demos/seln_svc/seln_line.c'\" unpacked with wrong size!
- fi
- # end of 'xview.demos/seln_svc/seln_line.c'
- fi
- if test -f 'xview.demos/seln_svc/simple_seln.c' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'xview.demos/seln_svc/simple_seln.c'\"
- else
- echo shar: Extracting \"'xview.demos/seln_svc/simple_seln.c'\" \(1913 characters\)
- sed "s/^X//" >'xview.demos/seln_svc/simple_seln.c' <<'END_OF_FILE'
- X/*
- X * seln.c -- print the primary selection by pressing the panel
- X * button. The selection may have originated from any window or
- X * application on the server.
- X */
- X#include <stdio.h>
- X#include <xview/xview.h>
- X#include <xview/panel.h>
- X#include <xview/server.h>
- X#include <xview/seln.h>
- X
- XXv_Server server;
- X
- Xmain(argc, argv)
- Xchar *argv[];
- X{
- X Frame frame;
- X Panel panel;
- X void exit();
- X int print_seln();
- X
- X xv_init(XV_INIT_ARGC_PTR_ARGV, &argc, argv, NULL);
- X
- X frame = (Frame) xv_create(NULL, FRAME,
- X FRAME_LABEL, argv[0],
- X NULL);
- X panel = (Panel)xv_create(frame, PANEL,
- X WIN_WIDTH, WIN_EXTEND_TO_EDGE,
- X NULL);
- X (void) xv_create(panel, PANEL_BUTTON,
- X PANEL_LABEL_STRING, "Quit",
- X PANEL_NOTIFY_PROC, exit,
- X NULL);
- X (void) xv_create(panel, PANEL_BUTTON,
- X PANEL_LABEL_STRING, "Print Selection",
- X PANEL_NOTIFY_PROC, print_seln,
- X NULL);
- X window_fit(panel);
- X window_fit(frame);
- X
- X server = (Xv_Server)xv_get(xv_get(frame, XV_SCREEN), SCREEN_SERVER);
- X
- X xv_main_loop(frame);
- X}
- X
- X/*
- X * Get the selection using selection_ask(). Note that if the
- X * selection is bigger than about 2K, the whole selection will
- X * not be gotten with one call, thus this method of getting
- X * the selection may not be sufficient for all situations.
- X */
- Xint
- Xprint_seln(item, event)
- XPanel_item item;
- XEvent *event;
- X{
- X Seln_holder holder;
- X Seln_request *response;
- X char text[BUFSIZ];
- X
- X /* get the holder of the primary selection */
- X holder = selection_inquire(server, SELN_PRIMARY);
- X response = selection_ask(server, &holder,
- X SELN_REQ_CONTENTS_ASCII, NULL,
- X NULL);
- X
- X strcpy(text, response->data + sizeof (SELN_REQ_CONTENTS_ASCII));
- X printf("---selection---\n%s\n---end seln---\n", text);
- X
- X return XV_OK;
- X}
- END_OF_FILE
- if test 1913 -ne `wc -c <'xview.demos/seln_svc/simple_seln.c'`; then
- echo shar: \"'xview.demos/seln_svc/simple_seln.c'\" unpacked with wrong size!
- fi
- # end of 'xview.demos/seln_svc/simple_seln.c'
- fi
- if test -f 'xview.demos/sv_compat/gray_stencil.pr' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'xview.demos/sv_compat/gray_stencil.pr'\"
- else
- echo shar: Extracting \"'xview.demos/sv_compat/gray_stencil.pr'\" \(1997 characters\)
- sed "s/^X//" >'xview.demos/sv_compat/gray_stencil.pr' <<'END_OF_FILE'
- X/* Format_version=1, Width=64, Height=64, Depth=1, Valid_bits_per_item=16
- X */
- X 0xAAAA,0xAAAA,0xAAAA,0xAAAA,
- X 0x5555,0x5555,0x5555,0x5555,
- X 0xAAAA,0xAAAA,0xAAAA,0xAAAA,
- X 0x5555,0x5555,0x5555,0x5555,
- X 0xAAAA,0xAAAA,0xAAAA,0xAAAA,
- X 0x5555,0x5555,0x5555,0x5555,
- X 0xAAAA,0xAAAA,0xAAAA,0xAAAA,
- X 0x5555,0x5555,0x5555,0x5555,
- X 0xAAAA,0xAAAA,0xAAAA,0xAAAA,
- X 0x5555,0x5555,0x5555,0x5555,
- X 0xAAAA,0xAAAA,0xAAAA,0xAAAA,
- X 0x5555,0x5555,0x5555,0x5555,
- X 0xAAAA,0xAAAA,0xAAAA,0xAAAA,
- X 0x5555,0x5555,0x5555,0x5555,
- X 0xAAAA,0xAAAA,0xAAAA,0xAAAA,
- X 0x5555,0x5555,0x5555,0x5555,
- X 0xAAAA,0xAAAA,0xAAAA,0xAAAA,
- X 0x5555,0x5555,0x5555,0x5555,
- X 0xAAAA,0xAAAA,0xAAAA,0xAAAA,
- X 0x5555,0x5555,0x5555,0x5555,
- X 0xAAAA,0xAAAA,0xAAAA,0xAAAA,
- X 0x5555,0x5555,0x5555,0x5555,
- X 0xAAAA,0xAAAA,0xAAAA,0xAAAA,
- X 0x5555,0x5555,0x5555,0x5555,
- X 0xAAAA,0xAAAA,0xAAAA,0xAAAA,
- X 0x5555,0x5555,0x5555,0x5555,
- X 0xAAAA,0xAAAA,0xAAAA,0xAAAA,
- X 0x5555,0x5555,0x5555,0x5555,
- X 0xAAAA,0xAAAA,0xAAAA,0xAAAA,
- X 0x5555,0x5555,0x5555,0x5555,
- X 0xAAAA,0xAAAA,0xAAAA,0xAAAA,
- X 0x5555,0x5555,0x5555,0x5555,
- X 0xAAAA,0xAAAA,0xAAAA,0xAAAA,
- X 0x5555,0x5555,0x5555,0x5555,
- X 0xAAAA,0xAAAA,0xAAAA,0xAAAA,
- X 0x5555,0x5555,0x5555,0x5555,
- X 0xAAAA,0xAAAA,0xAAAA,0xAAAA,
- X 0x5555,0x5555,0x5555,0x5555,
- X 0xAAAA,0xAAAA,0xAAAA,0xAAAA,
- X 0x5555,0x5555,0x5555,0x5555,
- X 0xAAAA,0xAAAA,0xAAAA,0xAAAA,
- X 0x5555,0x5555,0x5555,0x5555,
- X 0xAAAA,0xAAAA,0xAAAA,0xAAAA,
- X 0x5555,0x5555,0x5555,0x5555,
- X 0xAAAA,0xAAAA,0xAAAA,0xAAAA,
- X 0x5555,0x5555,0x5555,0x5555,
- X 0xAAAA,0xAAAA,0xAAAA,0xAAAA,
- X 0x5555,0x5555,0x5555,0x5555,
- X 0xAAAA,0xAAAA,0xAAAA,0xAAAA,
- X 0x5555,0x5555,0x5555,0x5555,
- X 0xAAAA,0xAAAA,0xAAAA,0xAAAA,
- X 0x5555,0x5555,0x5555,0x5555,
- X 0xAAAA,0xAAAA,0xAAAA,0xAAAA,
- X 0x5555,0x5555,0x5555,0x5555,
- X 0xAAAA,0xAAAA,0xAAAA,0xAAAA,
- X 0x5555,0x5555,0x5555,0x5555,
- X 0xAAAA,0xAAAA,0xAAAA,0xAAAA,
- X 0x5555,0x5555,0x5555,0x5555,
- X 0xAAAA,0xAAAA,0xAAAA,0xAAAA,
- X 0x5555,0x5555,0x5555,0x5555,
- X 0xAAAA,0xAAAA,0xAAAA,0xAAAA,
- X 0x5555,0x5555,0x5555,0x5555,
- X 0xAAAA,0xAAAA,0xAAAA,0xAAAA,
- X 0x5555,0x5555,0x5555,0x5555
- END_OF_FILE
- if test 1997 -ne `wc -c <'xview.demos/sv_compat/gray_stencil.pr'`; then
- echo shar: \"'xview.demos/sv_compat/gray_stencil.pr'\" unpacked with wrong size!
- fi
- # end of 'xview.demos/sv_compat/gray_stencil.pr'
- fi
- if test -f 'xview.demos/sv_compat/pw_draw.c' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'xview.demos/sv_compat/pw_draw.c'\"
- else
- echo shar: Extracting \"'xview.demos/sv_compat/pw_draw.c'\" \(3909 characters\)
- sed "s/^X//" >'xview.demos/sv_compat/pw_draw.c' <<'END_OF_FILE'
- X/*
- X * Name: pw_draw.c
- X *
- X * Description:
- X * Demonstrates some of the pixwin drawing functions on
- X * a canvas window. The drawing is done inside a repaint proc.
- X * XView (and X11) applications must always be prepared to
- X * repaint themselves on demand.
- X *
- X * Note: XView doesn't really support pw_* graphics calls.
- X * These are leftover functions from Sunview and are shown here for
- X * compatibility reference only.
- X */
- X
- X#include <stdio.h>
- X#include <xview/xview.h>
- X#include <xview/canvas.h>
- X#include <xview/svrimage.h>
- X
- Xstatic short chess_bits[] = {
- X#include <images/chesstool.icon>
- X};
- X
- Xstatic short gray_bits[] = {
- X#include "gray_stencil.pr"
- X};
- X
- XServer_image chess_image;
- XServer_image stencil_image;
- X
- X/*
- X * main()
- X * Create frame and canvas windows.
- X * Set a repaint proc for the canvas window.
- X * Create Server Images for fill and stencil operations
- X * in canvas_repaint_proc().
- X * Start the event loop.
- X */
- Xmain(argc,argv)
- X int argc;
- X char *argv[];
- X{
- X Frame frame;
- X Canvas canvas;
- X void canvas_repaint_proc();
- X
- X xv_init(XV_INIT_ARGS, argc, argv, 0);
- X
- X /* Create a frame and a canvas */
- X frame = xv_create(NULL, FRAME,
- X FRAME_LABEL, "xv_canvas_pw_draw",
- X XV_WIDTH, 734,
- X XV_HEIGHT, 448,
- X 0);
- X
- X canvas = xv_create(frame, CANVAS,
- X CANVAS_REPAINT_PROC, canvas_repaint_proc,
- X 0);
- X
- X /* By default, server images are created with depth 1 */
- X chess_image = xv_create(NULL,SERVER_IMAGE,
- X XV_WIDTH, 64,
- X XV_HEIGHT, 64,
- X SERVER_IMAGE_BITS, chess_bits,
- X 0);
- X
- X stencil_image = xv_create(NULL,SERVER_IMAGE,
- X XV_WIDTH, 64,
- X XV_HEIGHT, 64,
- X SERVER_IMAGE_BITS, gray_bits,
- X 0);
- X
- X xv_main_loop(frame);
- X return(0);
- X}
- X
- X/*
- X * canvas_repaint_proc()
- X * Called to repaint the canvas window. Draws into the window
- X * using various pixwin drawing functions.
- X */
- Xvoid
- Xcanvas_repaint_proc(canvas, canvas_pw, repaint_area)
- X Canvas canvas;
- X Pixwin *canvas_pw;
- X Rectlist *repaint_area;
- X{
- X static Pr_brush brush = {5};
- X static short dashed[] = {5, 3, 0};
- X static Pr_texture tex = {dashed, 0, 0, 0, 0, 0, 0, 0 };
- X static struct pr_pos lines[] = {{0,0}, {64,0}, {0,64}, {64,64}};
- X static struct pr_pos points[] = {{0, 128}, {128, 128}, {64, 0}};
- X static int num_points[] = {3};
- X
- X /* Rop the chess_image icon onto the canvas */
- X pw_text(canvas_pw, 64, 58, PIX_SRC, NULL, "pw_rop");
- X pw_rop(canvas_pw, 64, 64, 64, 64, PIX_SET, chess_image, 0, 0);
- X
- X /* Draw the chess_image icon using the stencil_image as a mask */
- X pw_text(canvas_pw, 192, 58, PIX_SRC, NULL, "pw_stencil");
- X pw_stencil(canvas_pw, 192, 64, 64, 64, PIX_SRC, stencil_image, 0, 0,
- X chess_image, 0, 0);
- X
- X /* Replicate the chess_image icon within the specified rectangle */
- X pw_text(canvas_pw, 352, 58, PIX_SRC, NULL,"pw_replrop");
- X pw_replrop(canvas_pw, 320, 64, 128, 128, PIX_SRC, chess_image, 0, 0);
- X
- X /* Fill the specified polygon with the chess_image icon */
- X pw_text(canvas_pw, 542, 58, PIX_SRC, NULL,"pw_polygon_2");
- X pw_polygon_2(canvas_pw, 512, 64, 1, num_points, points, PIX_SRC,
- X chess_image, 0, 0);
- X
- X pw_text(canvas_pw, 64, 312, PIX_SRC, NULL, "pw_vector");
- X pw_vector(canvas_pw, 64, 320, 128, 384, PIX_SRC, 1);
- X pw_vector(canvas_pw, 64, 384, 128, 320, PIX_SRC, 1);
- X
- X /* Draw a dashed line with the specifed line pattern & thickness */
- X pw_text(canvas_pw, 192, 312, PIX_SRC, NULL, "pw_line");
- X pw_line(canvas_pw, 192, 320, 256, 384, &brush, &tex, PIX_SET);
- X pw_line(canvas_pw, 192, 384, 256, 320, &brush, &tex, PIX_SET);
- X
- X /* Draw a set of lines */
- X pw_text(canvas_pw, 320, 312, PIX_SRC, NULL, "pw_polyline");
- X pw_polyline(canvas_pw, 320, 320, 4, lines, POLY_CLOSE, NULL, NULL, PIX_SET);
- X
- X /* Copy from one region of the canvas to another */
- X pw_text(canvas_pw, 512, 312, PIX_SRC, NULL, "pw_copy");
- X pw_copy(canvas_pw, 448, 320, 192, 64, PIX_SRC, canvas_pw, 400, 96);
- X}
- X
- END_OF_FILE
- if test 3909 -ne `wc -c <'xview.demos/sv_compat/pw_draw.c'`; then
- echo shar: \"'xview.demos/sv_compat/pw_draw.c'\" unpacked with wrong size!
- fi
- # end of 'xview.demos/sv_compat/pw_draw.c'
- fi
- echo shar: End of archive 4 \(of 6\).
- cp /dev/null ark4isdone
- MISSING=""
- for I in 1 2 3 4 5 6 ; do
- if test ! -f ark${I}isdone ; then
- MISSING="${MISSING} ${I}"
- fi
- done
- if test "${MISSING}" = "" ; then
- echo You have unpacked all 6 archives.
- rm -f ark[1-9]isdone
- else
- echo You still need to unpack the following archives:
- echo " " ${MISSING}
- fi
- ## End of shell archive.
- exit 0
-